// 创建 axios 文件
import axios from 'axios'
import Vue from 'vue'
import router from '../router/index'

const http = axios.create({
  // 设置请求路径
  baseURL: "http://localhost:3000/admin"
})

// 请求拦截器
http.interceptors.request.use(config => {
  // 携带 token
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = 'Bearer ' + token
  }
  return config
}, error => {
  console.log('请求没有发出去')
  return error
})

// 响应拦截器
http.interceptors.response.use(config => {
  return config
}, error => {
  // 获取错误的信息
  const { data, status } = error.response

  // Vue.prototype.$message.error({
  //   background: true,
  //   content: data.message
  // })

  // 如果状态码为 401 表示用户没有登录，所以重定向 登录页面
  if (status === 401) {
    router.push('/login')
  }

  // 我这里不知道怎么弄在接收到 异常的状态码时，在控制台不报错；
  return Promise.reject(error)
  .catch(() => {
    Vue.prototype.$message.error({
      background: true,
      content: data.message
    })
  })
})

export default http